package com.zlk.algorithm.huawei.leetcode.matrix;
/**
 * @program: algorithm
 * @ClassName Code13_rotate
 * @description:旋转图像
 * 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
 * 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像
 * @author: slfang
 * @create: 2025-01-06 15:16
 * @Version 1.0
 **/
public class Code13_rotate {


    //原地旋转
    //todo
    public void rotate(int[][] matrix) {

    }


    //需要一个int[][] matrixNew = new int[n][n];
    //对于矩阵中第 i 行的第 j 个元素，在旋转后，它出现在倒数第 i 列的第 j 个位置。
    //因此对于矩阵中的元素 matrix[row][col]，在旋转后，它的新位置为 matrixnew[col][n−row−1]。
    //这样以来，我们使用一个与 matrix 大小相同的辅助数组 matrix
    //new
    //​
    // ，临时存储旋转后的结果。
    public void rotate1(int[][] matrix) {
        int n = matrix.length;
        int[][] matrixNew = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrixNew[j][n-i-1] = matrix[i][j];
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j]=matrixNew[i][j];
            }
        }
    }


}
